// 基础路径接口
interface BaseConf {
  baseApi: string // 基础路径
  mockBaseApi: string // mock基础路径
}

// 开发环境与生产环境接口
interface EnvConf {
  development: BaseConf
  production: BaseConf
}

// 配置类
class AllConf {
  env!: keyof EnvConf
  isMock = false
  baseApi!: string
  mockBaseApi!: string
}

// 基于环境变量的配置类
class EnvConfigClass {
  static envConfigClass: EnvConfigClass = new EnvConfigClass
  // 获取当前环境
  readonly curEnv = import.meta.env.MODE === 'development' ? 'development' : 'production'
  envConf!: EnvConf 
  allConf!: AllConf

  constructor() {
    this.initEnvConf()
    this.getAllConf()
  }

  // 初始化基础路径对象
  initEnvConf() {
    this.envConf = {
      development: {
        baseApi: import.meta.env.VITE_BASE_URL!,
        mockBaseApi: '',
      },
      production: {
        baseApi: '',
        mockBaseApi: '',
      }
    }
  }

  // 初始化项目需要的对象
  getAllConf() {
    this.allConf = {
      env: this.curEnv,
      isMock: false,
      ...this.envConf[this.curEnv]
    }
  }
}

// 当前环境需要的配置
export default EnvConfigClass.envConfigClass.allConf
